home *** CD-ROM | disk | FTP | other *** search
/ Shareware Super Platinum 8 / Shareware Super Platinum 8.iso / mac / PROGTOOL / BOOTRCD.ZIP;1 / BRECORD.H < prev    next >
Encoding:
C/C++ Source or Header  |  1992-08-14  |  2.4 KB  |  106 lines

  1. //        BRECORD.H
  2.  
  3. //      Copyright 1992 by George H. Mealy
  4.  
  5. #ifndef    BRECORD_H
  6. #define BRECORD_H
  7.  
  8. #pragma    option    -a-
  9.  
  10. struct  DIR {                           // Directory entry
  11.     unsigned char    stem[8];
  12.     unsigned char    ext[3];
  13.     unsigned char    fileatt;
  14.     unsigned char    junk[10];
  15.     unsigned         time,
  16.                      date;
  17.     unsigned         cluster;
  18.     unsigned long     filesize;
  19. };
  20.  
  21. /*
  22.     First byte of stem:
  23.  
  24.     00    first unused entry
  25.     2E    directory entry
  26.     E5    erased entry
  27.  
  28.     Attribute byte:
  29.  
  30.     01    readonly
  31.     02    hidden
  32.     04    system
  33.     08    volume label
  34.     10    subdirectory
  35.     20    modified
  36. */
  37.  
  38. class brecord {
  39.   private:
  40.     char            bjunk1[3],            // Initial jump
  41.                     bvendor[8];            // Vendor
  42.     unsigned        bbytes;                // Bytes per sector
  43.     unsigned char    bsect;                // Sectors per cl
  44.     unsigned        brsvd;                // # reserved sectors
  45.     unsigned char    bfat;                // # FATs
  46.     unsigned        bndir,                // # root directory entries
  47.                     btotal;                // Total # sectors
  48.     unsigned char    btype;                // Media
  49.     unsigned        bfatsect,            // # sectors per FAT
  50.                     btracks,            // # sectors per track
  51.                     bheads;                // # heads
  52.     unsigned long    bhidden,            // # hidden sectors
  53.                     b32total;            // Total # sectors, when btotal == 0
  54.                                         //   i.e., if partition size > 32 MB
  55.     unsigned char     bjunk2[3];
  56.     unsigned void far *bserial;            // Disk serial #
  57.     unsigned char    bvolume[11];        // Volume label
  58.     unsigned char    btail[512-54];        // Rest of boot record
  59.     
  60.   protected:
  61.     unsigned char    drive;
  62.     unsigned        *FAT;               // File allocation table (16 bit entries)
  63.     unsigned        *FAT12;             // Same (12 bit entries)
  64.     DIR             *rootdict;          // The root directory
  65.     unsigned        nFATs;
  66.     unsigned        FATsize;
  67.       unsigned        endtest;
  68.       unsigned        data_origin;
  69.       unsigned        endcluster;
  70.       unsigned        sectorsize;
  71.       unsigned         clustersize;
  72.       unsigned        dictsize;
  73.       unsigned        dictsects;
  74.       unsigned        is16bit;
  75.       unsigned        freecount;
  76.       unsigned        dataclusters;
  77.       
  78.   public:
  79.     brecord(char);
  80.     ~brecord();
  81.     void getboot();
  82.       void putboot();
  83.     void listboot();
  84.     void getrootdict();
  85.     void getFAT();
  86.     void derase();
  87.     int  readdir(unsigned);
  88.     int  writedir(unsigned);
  89.     int     clength(unsigned);
  90.     unsigned    sector(unsigned);
  91.     unsigned    FATentry(unsigned);
  92.     void dline(DIR *);
  93.   friend void setserial();
  94.   friend void showserial();
  95. };
  96.  
  97. #endif
  98.  
  99.      
  100.     
  101.     
  102.                                             
  103.     
  104.                         
  105.                         
  106.